<?php
class IndexAction extends LoginAction
{
    public function index()
    {
        $mallCount = M('Market')->count();
        $brandCount = M('Brand')->count();
        $goodCount = M('Good')->count();
        $adCount = M('Ad')->count();
        $disCount = M('BrandNews')->count();
        $fbCount = M('FloorBrand')->count();
        $this->getAddStatistics();
        $this->assign('usersCount', getOnlineUserCount());
        $this->assign('disCount', $disCount);
        $this->assign('mallCount', $mallCount);
        $this->assign('brandCount', $brandCount);
        $this->assign('goodCount', $goodCount);
        $this->assign('adCount', $adCount);
        $this->assign('fbCount', $fbCount);
        $this->display();
    }

    public function top()
    {
        $this->display();
    }

    public function left()
    {
        $this->display();
    }

    public function main()
    {
        $this->display();
    }

    public function fileUpload()
    {
        $type = getGet('type');
        $data = array();
        $data['error'] = 1;
        if ($type) {
            $id = $this->uploadFiles($type, true);
            if ($id) {
                $data['error'] = 0;
                $data['url'] = $this->getManagedUrl($id, $type, true);
            } else {
                $data['message'] = '上传失败！';
            }
        } else {
            $data['message'] = '必须有添加类型！';
        }
        exit(json_encode($data));
    }

    public function fileManager()
    {
        $type = getGet('type');
        $php_path = UPLOAD_PATH;
        $php_url = UPLOAD_URL;
        $root_path = $php_path . $type . '/';
        $root_url = $php_url . $type . '/';
        $ext_arr = array('gif', 'jpg', 'jpeg', 'png', 'bmp');
        //根据path参数，设置各路径和URL
        if (empty($_GET['path'])) {
            $current_path = realpath($root_path) . '/';
            $current_url = $root_url;
            $current_dir_path = '';
            $moveup_dir_path = '';
        } else {
            $current_path = realpath($root_path) . '/' . $_GET['path'];
            $current_url = $root_url . $_GET['path'];
            $current_dir_path = $_GET['path'];
            $moveup_dir_path = preg_replace('/(.*?)[^\/]+\/$/', '$1',
                $current_dir_path);
        }
        $order = empty($_GET['order']) ? 'name' : strtolower($_GET['order']);
        if (preg_match('/\.\./', $current_path)) {
            echo 'Access is not allowed.';
            exit();
        }
        if (!preg_match('/\/$/', $current_path)) {
            echo 'Parameter is not valid.';
            exit();
        }
        if (!file_exists($current_path) || !is_dir($current_path)) {
            echo 'Directory does not exist.';
            exit();
        }
        $file_list = array();
        if ($handle = opendir($current_path)) {
            $i = 0;
            while (false !== ($filename = readdir($handle))) {
                if ($filename{0} == '.')
                    continue;
                $file = $current_path . $filename;
                if (is_dir($file)) {
                    $file_list[$i]['is_dir'] = true; //是否文件夹
                    $file_list[$i]['has_file'] = (count(
                        scandir($file)) > 2); //文件夹是否包含文件
                    $file_list[$i]['filesize'] = 0; //文件大小
                    $file_list[$i]['is_photo'] = false; //是否图片
                    $file_list[$i]['filetype'] = ''; //文件类别，用扩展名判断
                } else {
                    $file_list[$i]['is_dir'] = false;
                    $file_list[$i]['has_file'] = false;
                    $file_list[$i]['filesize'] = filesize($file);
                    $file_list[$i]['dir_path'] = '';
                    $file_ext = strtolower(array_pop(explode('.', trim($file))));
                    $file_list[$i]['is_photo'] = in_array($file_ext, $ext_arr);
                    $file_list[$i]['filetype'] = $file_ext;
                }
                $file_list[$i]['filename'] = $filename; //文件名，包含扩展名
                $file_list[$i]['datetime'] = date('Y-m-d H:i:s',
                    filemtime($file)); //文件最后修改时间
                $i++;
            }
            closedir($handle);
        }
        usort($file_list, 'cmp_func');
        $result = array();
        //相对于根目录的上一级目录
        $result['moveup_dir_path'] = $moveup_dir_path;
        //相对于根目录的当前目录
        $result['current_dir_path'] = $current_dir_path;
        //当前目录的URL
        $result['current_url'] = $current_url;
        //文件数
        $result['total_count'] = count($file_list);
        //文件列表数组
        $result['file_list'] = $file_list;
        //输出JSON字符串
        exit(json_encode($result));
    }

    function cmp_func($a, $b)
    {
        global $order;
        if ($a['is_dir'] && !$b['is_dir']) {
            return -1;
        } else if (!$a['is_dir'] && $b['is_dir']) {
            return 1;
        } else {
            if ($order == 'size') {
                if ($a['filesize'] > $b['filesize']) {
                    return 1;
                } else if ($a['filesize'] < $b['filesize']) {
                    return -1;
                } else {
                    return 0;
                }
            } else if ($order == 'type') {
                return strcmp($a['filetype'], $b['filetype']);
            } else {
                return strcmp($a['filename'], $b['filename']);
            }
        }
    }

    /**
     * 获取编辑当前月添加情况
     * @author ice<iceinto@mallog.com.cn>
     */
    public function getAddStatistics()
    {
        $Date = new Date();
        $fireTime = $Date->firstDayOfMonth()->format("%Y-%m-%d");
        $lastTime = $Date->lastDayOfMonth()->format("%Y-%m-%d");
        $fireTime = strtotime($fireTime);
        $lastTime = strtotime($lastTime);
        $map = array();
        $map['add_time'] = array(array('gt', $fireTime), array('lt', $lastTime));
        $map['editor'] = $_SESSION[C('USER_AUTH_KEY')];
        //获取柜台数据
        $addFloorBrand = M('FloorBrand')->where($map)->count();
        //获取特卖数据
        $addMallDiscount = M('MallDiscount')->where($map)->count();
        $this->assign('addFloorBrand', $addFloorBrand);
        $this->assign('addMallDiscount', $addMallDiscount);
    }
}

?>